package com.zcl.proxy;

import com.zcl.dao.UserDao;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

//JDK实现代理
public class UserDaoJDKImpl implements InvocationHandler {
    private UserDao userDao;
    public UserDao create(UserDao userDao){
        //目标对象的类加载器
        //目标对象所实现的所有的接口的数组类型
        //实现了InvocationHandler接口的对象
       return (UserDao) Proxy.newProxyInstance(userDao.getClass().getClassLoader(),userDao.getClass().getInterfaces(),this);
    }
    //用于调用对象的方法
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        if (method.getName().equals("search")){
            cheat();
        }
       return method.invoke(userDao,args);
    }
    private void cheat(){
        System.out.println("启动前的检查");
    }
}
